int a[3][3]

来源:百度知道 编辑:UC知道 时间:2024/05/23 20:37:23
以int a[3][3]
={1,2,3,4,5,6,7,8,9};为例
a+i,
*(a+i),
a[i],
&a[i]有什么区别

a+i 是第i维数组的首地址,类型为int (*)[3],即数组指针;
*(a+i) 是第i维数组的首地址,类型为int *;
a[i] 同上;

a是指向第一个元素的指针
a相当于迭代器 后面跟个记数器就是向后移动i个位置可以假设 int* p=a[i];
*(p+5) 则是 a[i]向后移动5位 当然 不能越界 这里是假设
*(a+i)是对这个位置进行解引用

a[i]是指向a中 位置i的指针
&a[i] 是取地址 a[i]

a+i是a中第i个元素
*(a+i)是指向第i个元素的指针
a[i]是a中第i个元素
&a[i]是第i个元素的地址

楼上说的有理
C语言就是这么说的